{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "4ea17449-b597-4ba9-a18c-a14206477f96",
   "metadata": {},
   "source": [
    "Chapter 29\n",
    "# 将鸢尾花数据集拆分为训练集和测试集\n",
    "Book_1《编程不难》 | 鸢尾花书：从加减乘除到机器学习  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "b7282482-07ef-4185-a984-44269fb7d239",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.datasets import load_iris\n",
    "from sklearn.model_selection import train_test_split\n",
    "import matplotlib.pyplot as plt\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "import seaborn as sns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "7a14989b-d055-42be-a81e-898c091a0800",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 导入鸢尾花数据\n",
    "X,y = load_iris(return_X_y=True)\n",
    "# 拆分鸢尾花数据集为训练集和测试集"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "7a90ddef-1e22-48c8-b067-5836a9610604",
   "metadata": {},
   "outputs": [],
   "source": [
    "X_train, X_test, y_train, y_test = train_test_split(\n",
    "    X, y, test_size=0.2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "1652340e-66b5-41e7-bf7b-e8c8560097cc",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 自定义可视化函数\n",
    "def visualize(df):\n",
    "    fig, axs = plt.subplots(1, 2, \n",
    "        gridspec_kw={'width_ratios': [4, 1]})\n",
    "\n",
    "    sns.heatmap(df.iloc[:,0:-1],\n",
    "                cmap='RdYlBu_r', yticklabels = False,\n",
    "                cbar=False, ax = axs[0])\n",
    "\n",
    "    sns.heatmap(df.iloc[:,[-1]],\n",
    "                cmap='Set3', yticklabels = False,\n",
    "                cbar=False, ax = axs[1])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "a762b83b-4fe2-471d-90e0-fb41176e5895",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 转化为Pandas DataFrame\n",
    "columns = ['Sepal length, X1', 'Sepal width, X2', \n",
    "           'Petal length, X3', 'Petal width, X4',\n",
    "           'Species']\n",
    "df_full = pd.DataFrame(np.c_[X,y],\n",
    "                       columns = columns)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "5c8051a8-b619-4632-bcc0-2c6a6c619dd8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "visualize(df_full)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "210daf38-69a6-4913-a07f-48a78638e936",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 训练集\n",
    "df_train = pd.DataFrame(np.c_[X_train, y_train],\n",
    "                        columns = columns)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "3513609f-ebbc-48f2-97a9-786a9677241e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "visualize(df_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "6710ebbb-f695-4422-91ef-c888c46a3f31",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 测试集\n",
    "df_test = pd.DataFrame(np.c_[X_test, y_test],\n",
    "                       columns = columns)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "2ad43b95-db5e-4da5-ab92-5f6600c8f056",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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191336077rhDixcv1tKlSzVnzhxNmDBB77zzjlJSUiRJycnJBf6b5ORk/fDDD5Kk1atXa+vWrYqOji5wzMmTJ5WRkaF9+/Zp9+7duuWWW4qUp7Dv17lzZ6WkpOi2227Trbfeqk6dOul3v/udEhISft0JuAIlvgw0bNhQLVu21MCBAy+6/4cfftCkSZOCnMp7qlSpooyMDNWsWdO/rWrVqpo/f746dOigXr162QvnITExMTp8+LCqV68uSWrWrFmBC8mpU6fsLCF6UHx8vD7//HO98cYbatGihV588UXdd999tmPhCkVGRurWW2/VrbfeqtGjR6tPnz4aM2aMvwxczPn/p/Lz83XDDTfogw8+uOCYihUrKiTk8u6sF/b9JGnKlCl6/PHHNWfOHH388ccaOXKkvv32W7Vq1eqy/qwrVeJnBm6++Walp6dfcn90dLTatm0bxETe1LFjR3344YcXbD9fCH45YINfJykpSWlpaf6vv//+e/+/WCVp/fr1qlevno1onjVw4EB9++23Gj9+vHr06GE7DopZUlKSjh075v962bJlBfYvW7ZM9evXl3S2fG/ZskWVKlVS3bp1C/yKiYlRdHS0atasqXnz5hXpzy7s+53XtGlTjRgxQkuWLFHDhg0veq0NONv3KVAybN++3cyZM+eS+3fv3m3ee++9ICbypvT0dJOZmXnJ/R988IH5+OOPg5jIHadOnTKDBw82TZo0+bd/B7g6HThwwHTo0MFMmzbNrF271mRmZppPPvnEVK5c2fTu3dsYc/Z+foUKFcy7775r0tPTzejRo01ISIjZsGGDMcaYY8eOmXr16pn27dubRYsWmczMTLNgwQLz+OOPm127dhljjHnvvfdMZGSkefXVV83mzZvN6tWrzWuvvebPoZ/NDBT2/TIzM83w4cPNkiVLzPbt283cuXNNfHy8ef3114N78owxlAEUm9OnT9uOAMBRJ0+eNMOHDzfNmjUzMTExpkyZMiYxMdGMHDnSHD9+3Bhz9gf13/72N3PrrbeaiIgIU6NGDfPRRx8V+D579uwxDz74oKlQoYKJiIgwtWvXNn379jXZ2dn+Y958802TmJhowsLCTEJCgnnsscf8+35eBgr7fllZWaZ79+4mISHBhIeHmxo1apjRo0ebvLy8wJ6siyjxZWDUqFHmzJkzl9y/Y8cO06lTpyAm8qaePXsW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1Kih9PR0y+mA4CjRZQDB17RpU61atUrXXnutOnTooNGjR+vAgQOaNm2arr/+etvxSrQaNWrYjuCkhg0bat26dapdu7ZatmypCRMmKDw8XG+//bZq165tOx4QFCX6NsEvMeUeeKtWrdKRI0fUoUMH7d+/X7169VJqaqrq1q2rKVOmqHHjxrYjegoT7oE3d+5cHTt2THfddZcyMzN15513atOmTSpfvrymT5+uW265xXZEIOA8UwaYcoeXMOFu16FDhxQXF+c/34DXFW0CrwQ4P+V+6NAhlS5dWsuWLdOOHTt0ww03MBEcAPv27dPixYuVmpqq/fv3247jOecn3Pfu3asyZcpow4YNWrRokZo3b64FCxbYjucpvXv31pEjRwpsi4+P1/Hjx9W7d29LqYAgMx4RExNjNm3a5P/9xo0bjTHGLFu2zCQmJtqM5inZ2dnmgQceMKVKlTI+n8/4fD5TqlQpc//995vDhw/bjucZ5cuXN2vXrjXGGFOuXDn/a3vevHmmSZMmNqN5TkhIiNm7d+8F2/fv329CQ0MtJAKCzzMrAxebcpfElHsx69Onj5YvX66vvvpKhw8fVnZ2tr766iutWrVKffv2tR3PMy424S6JCfdilJOTo+zsbBljdOTIEeXk5Ph//fOf/9Ts2bNVqVIl2zGBoPDMuwmYcg+Or7/+WnPnztXNN9/s33bbbbdp0qRJ6tKli8Vk3sKEe+DFxsbK5/PJ5/Pp2muvvWC/z+fTM888YyEZEHyeKQPjxo3z3/d79tln1atXLw0cONA/5Y7iUb58ecXExFywPSYmRnFxcRYSedPIkSN17NgxSdJzzz2nO++8U23atPFPuOPKfffddzLGqGPHjvr0008VHx/v3xceHq4aNWqoatWqFhMCweOZdxMgON5++23NmDFDU6dOVUJCgiQpKytLvXr10l133aX+/ftbTuhdTLgHxo4dO3TNNddwXuE0z5WBffv2KT09XT6fT4mJiapYsaLtSJ7StGlTbd26VadOndI111wjSdq5c6ciIiJUr169AsempaXZiOgJvXv31quvvqro6OgC248dO6bHHntMkydPtpTMmxYvXqy33npLmZmZmjFjhqpVq6Zp06apVq1aBW6JAV7lmdsEOTk5+v3vf6/p06f734MdGhqqe+65R3/7298uurSNy9e9e3fbEZzw/vvv6/nnn7+gDJw4cUJTp06lDBSjTz/9VD179tT999+vtLQ0nTp1SpJ05MgRjRs3TrNnz7acEAg8z6wM/O53v9MPP/ygv/71r0pOTpbP59OSJUs0aNAgNWrUSJ988ontiEChcnJyZIxRXFyctmzZUmBlKy8vT19++aWGDx/uf3cBrlzTpk01ePBgPfjgg4qOjtbatWtVu3Zt/fDDD+rSpYuysrJsRwQCzjMrA0y5B8/hw4c1c+ZMZWRkaNiwYYqPj1daWpoqV66satWq2Y5XojHhHnzp6elq27btBdvLlSunw4cPBz8QYIFnygBT7sGxbt06derUSTExMdq+fbv69u2r+Ph4ff7559qxY4emTp1qO2KJxoR78CUkJGjr1q2qWbNmge2pqam8jRPO8EwZGDlypIYMGXLBlPuwYcM0atQoy+m8Y8iQIUpJSdGECRMK3M/u2rWrevToYTGZN7Rr107S2ccZM+EeHP3799egQYM0efJk+Xw+7d69W0uXLtXQoUM1evRo2/GAoPDMzABT7sERExOjtLQ01alTp8D91R07digxMVEnT560HdEzmHAPnqefflqvvPKK//UbERGhoUOH6tlnn7WcDAgOz6wMMOUeHJGRkcrJyblge3p6Om/jLEZMuAfX2LFj9fTTT2vjxo3Kz89XUlKS/+OgARd4ZmUAwdGvXz/t379fn3zyieLj47Vu3TqFhoaqe/fuatu2rSZOnGg7oicw4R54x48f17BhwzRr1iydOXNGnTp10muvvaYKFSrYjgYEnWceVCSdnXJ/5513NGLECB06dEjS2VsCP/30k+Vk3vHiiy9q//79qlSpkk6cOKF27dqpbt26io6O1tixY23H8wwm3ANvzJgxeu+993THHXfo3nvv1bfffquBAwfajgVY4ZnbBEy5B0e5cuWUmpqq+fPnKy0tTfn5+WrWrJk6depkO5qnMOEeeJ999pneffdd3XvvvZKkBx54QDfddJPy8vIUGhpqOR0QXJ4pA0y5B1fHjh3VsWNH2zE8iwn3wNu1a5fatGnj/7pFixYqVaqUdu/ererVq1tMBgSfZ24TrFy58qIPyalWrRr3V4vB8uXL9T//8z8Ftk2dOlW1atVSpUqV1K9fP/+QG67ck08+qe7du6tDhw46evSo2rZtqz59+qh///569NFHbcfzhLy8PIWHhxfYVqpUKeXm5lpKBNjjmZUBptwD609/+pPat2+vrl27SpLWr1+vhx9+WCkpKbruuuv0wgsvqGrVqvrTn/5kN6iHMOEeWMYYpaSkKCIiwr/t5MmTGjBggMqWLevf9tlnn9mIBwSVZ95NwJR7YCUkJOjLL79U8+bNJZ19X/bChQuVmpoqSZoxY4bGjBmjjRs32oxZ4jHhHjwPPfRQkY6bMmVKgJMA9nmmDOTk5Oj222/Xhg0bdOTIEVWtWlVZWVlKTk7W7NmzCzR9XL7IyEht2bLFfy/15ptvVpcuXTRy5EhJ0vbt23X99dfryJEjNmOWeMOGDdPrr7+u+++/X5GRkfroo4/Uvn17zZgxw3Y0AB7mmdsETLkHVuXKlbVt2zZVr15dp0+fVlpaWoEH5hw5ckRhYWEWE3oDE+4AbPDMygACq3///lq/fr3Gjx+vWbNm6f3339fu3bv9A1gffPCBJk6cqJUrV1pOWrKFh4dr27ZtBZ7+WLp0aW3evJkJdwABU+LfTcCUe3A899xzCg0NVbt27TRp0iRNmjSpwCT25MmT1blzZ4sJvYEJdwA2lPiVga5du6p9+/Z66qmnJJ2dcm/WrFmBKff+/fsz5V5MsrOzFRUVdcGS9aFDhxQVFXXBDzJcnpCQEHXt2rXAhPuXX36pjh07MuEOIGBKfBlgyh1ewoQ7ABtK/ADhP//5T1WuXNn/9cKFC9WlSxf/1zfeeKN27dplIxpw2fghD8CGEj8zcH7KXZJ/yj05Odm/nyl3AAD+vRJfBrp06aLhw4dr8eLFGjFihMqUKVPg88bXrVunOnXqWEwIAMDVrcTfJnjuued01113qV27doqKitL777/PlDsAAJehxA8QnseUOwAAv45nygAAAPh1SvzMAAAAuDKUAQAAHEcZAADAcZQBAAAcRxkAAMBxlAEAABxHGQAAwHH/HzfOcSXxHtiEAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "visualize(df_test)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.9"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
